import path from "node:path";
import fsp from "node:fs/promises";

/**
 * 要保留的语言包
 * @type {string[]}
 */
const KeepLocales = [
  // "af",
  // "am",
  // "ar",
  // "bg",
  // "bn",
  // "ca",
  // "cs",
  // "da",
  // "de",
  // "el",
  // "en-GB",
  "en-US",
  // "es-419",
  // "es",
  // "et",
  // "fa",
  // "fi",
  // "fil",
  // "fr",
  // "gu",
  // "he",
  // "hi",
  // "hr",
  // "hu",
  // "id",
  // "it",
  // "ja",
  // "kn",
  // "ko",
  // "lt",
  // "lv",
  // "ml",
  // "mr",
  // "ms",
  // "nb",
  // "nl",
  // "pl",
  // "pt-BR",
  // "pt-PT",
  // "ro",
  // "ru",
  // "sk",
  // "sl",
  // "sr",
  // "sv",
  // "sw",
  // "ta",
  // "te",
  // "th",
  // "tr",
  // "uk",
  // "ur",
  // "vi",
  "zh-CN",
  "zh-TW",
];

/**
 * 打包阶段(生成安装包前)执行
 * @see https://www.electron.build/app-builder-lib.interface.configuration#afterpack
 * @param {import("app-builder-lib").PackContext} context
 * @returns {Promise<void>}
 */
async function afterPack(context) {
  const appOutDir = context.appOutDir; // /path/to/xxx/0.0.1/win-unpacked
  // 删除多余的语言包
  const localesDir = path.resolve(appOutDir, "locales");
  const files = await fsp.readdir(localesDir);
  for (const file of files) {
    if (file.endsWith(".pak")) {
      const localeName = path.basename(file, ".pak");
      if (!KeepLocales.includes(localeName)) {
        await fsp.rm(path.resolve(localesDir, file), { force: true });
        // console.log("[electron-builder] afterPack remove locale pak =>", file);
      }
    }
  }
}

export default afterPack;
